AArch64: Use SSBS for CVE_2018_3639 mitigation
authorJeenu Viswambharan <[email protected]>
Thu, 15 Nov 2018 11:38:03 +0000 (11:38 +0000)
committerJeenu Viswambharan <[email protected]>
Mon, 10 Dec 2018 14:28:58 +0000 (14:28 +0000)
commit48e1d350a0021a9a2f7e34041f28273dee9eb885
tree090c159d164bcb90c44b2e0101fc844a3754808f
parent19b56cf4a2251e5ffcab41cdd6dd8449f8b1402a
AArch64: Use SSBS for CVE_2018_3639 mitigation

The Armv8.5 extensions introduces PSTATE.SSBS (Speculation Store Bypass
Safe) bit to mitigate against Variant 4 vulnerabilities. Although an
Armv8.5 feature, this can be implemented by CPUs implementing earlier
version of the architecture.

With this patch, when both PSTATE.SSBS is implemented and
DYNAMIC_WORKAROUND_CVE_2018_3639 is active, querying for
SMCCC_ARCH_WORKAROUND_2 via. SMCCC_ARCH_FEATURES call would return 1 to
indicate that mitigation on the PE is either permanently enabled or not
required.

When SSBS is implemented, SCTLR_EL3.DSSBS is initialized to 0 at reset
of every BL stage. This means that EL3 always executes with mitigation
applied.

For Cortex A76, if the PE implements SSBS, the existing mitigation (by
using a different vector table, and tweaking CPU ACTLR2) is not used.

Change-Id: Ib0386c5714184144d4747951751c2fc6ba4242b6
Signed-off-by: Jeenu Viswambharan <[email protected]>
include/common/aarch32/el3_common_macros.S
include/common/aarch64/el3_common_macros.S
include/lib/aarch32/arch.h
include/lib/aarch64/arch.h
lib/cpus/aarch64/cortex_a76.S
services/arm_arch_svc/arm_arch_svc_setup.c